home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Caml Light 0.7 / Caml Light 0.7 source / src / tools / dumpsymb.ml < prev    next >
Text File  |  1995-06-01  |  2KB  |  51 lines

  1. #open "sys";;
  2. #open "const";;
  3. #open "symtable";;
  4.  
  5. let print_qualid q =
  6.   print_string q.qual; print_string "__"; print_string q.id
  7. ;;
  8.  
  9. let print_numtable f tbl =
  10.   print_string "("; print_int tbl.num_cnt;
  11.   print_string " entries)"; print_newline();
  12.   hashtbl__do_table
  13.     (fun qualid n ->
  14.       f qualid; print_char ` `; print_int n; print_newline())
  15.     tbl.num_tbl
  16. ;;
  17.  
  18. let print_exn (id, stamp) =
  19.   print_qualid id; print_string "("; print_int stamp; print_string ")"
  20. ;;
  21.  
  22. let main() =
  23.   let ic = open_in_bin command_line.(1) in
  24.   let pos_hdr = in_channel_length ic - 20 in
  25.   seek_in ic pos_hdr;
  26.   let size_code = input_binary_int ic in
  27.   let size_data = input_binary_int ic in
  28.   let size_symb = input_binary_int ic in
  29.   let size_debug = input_binary_int ic in
  30.   seek_in ic (pos_hdr - size_debug - size_symb);
  31.   let global_table = (input_value ic : qualified_ident numtable) in 
  32.   let exn_tag_table = (input_value ic : (qualified_ident * int) numtable) in 
  33.   let tag_exn_table = (input_value ic : (qualified_ident * int) vect) in 
  34.   print_string "---- Table of globals:"; print_newline();
  35.   print_numtable print_qualid global_table;
  36.   print_newline();
  37.   print_string "---- Table of exceptions:"; print_newline();
  38.   print_numtable print_exn exn_tag_table;
  39.   print_newline();
  40.   print_string "---- Table of exception tags:"; print_newline();
  41.   for i = 0 to vect_length tag_exn_table - 1 do
  42.     print_int i; print_char `\t`;
  43.     print_exn tag_exn_table.(i); print_newline()
  44.   done
  45. ;;
  46.  
  47. printexc__f main ()
  48. ;;
  49.  
  50.   
  51.